package pe.edu.upc.dsd.whereeat.jms;

import java.util.List;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import org.apache.log4j.Logger;
import org.springframework.jms.core.JmsTemplate;

import pe.edu.upc.dsd.whereeat.dao.UsuarioDAO;
import pe.edu.upc.dsd.whereeat.domain.Usuario;
import pe.edu.upc.dsd.whereeat.util.MailSend;

/**
 * 
 * @author Ranfi
 * 
 */
public class EchoJmsServer implements MessageListener {

	private Logger logger = Logger.getLogger(EchoJmsServer.class);

	private JmsTemplate jmsTemplate;
	private String responseDestination;
	private UsuarioDAO usuarioDAO;
	private MailSend mailSend;

	public EchoJmsServer() {
		// TODO Auto-generated constructor stub
	}

	public void onMessage(Message message) {

		if (message instanceof TextMessage) {
			final TextMessage requestMessage = (TextMessage) message;
			try {
				List<Usuario> list = getUsuarioDAO().findAll();
				final String mensaje = requestMessage.getText();

				for (Usuario usuario : list) {
					mailSend.sendMail("randresfigueroa@gmail.com", usuario.getCorreo(), "prueba!!", "prueba!!");
				}

				logger.debug("EchoJmsServer recibiendo: " + mensaje);
				System.out.println("EchoJmsServer recibiendo: " + mensaje);

			} catch (final JMSException e) {
				logger.error("Error al procesar el mensaje JMS", e);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

	public void setJmsTemplate(JmsTemplate jmsTemplate) {
		this.jmsTemplate = jmsTemplate;
	}

	public void setResponseDestination(String responseDestination) {
		this.responseDestination = responseDestination;
	}

	public UsuarioDAO getUsuarioDAO() {
		return usuarioDAO;
	}

	public void setUsuarioDAO(UsuarioDAO usuarioDAO) {
		this.usuarioDAO = usuarioDAO;
	}

	public MailSend getMailSend() {
		return mailSend;
	}

	public void setMailSend(MailSend mailSend) {
		this.mailSend = mailSend;
	}

}
